//package abg.core.mybatis;
//
//import abg.core.common.util.StringKit;
//import abg.core.domain.project.PageSearch;
//import abg.core.mybatis.model.Page;
//import abg.core.mybatis.util.DbKit;
//import com.alibaba.fastjson2.JSONArray;
//import com.alibaba.fastjson2.JSONObject;
//import com.mybatisflex.core.datasource.DataSourceKey;
//import com.mybatisflex.core.query.QueryWrapper;
//import com.mybatisflex.core.row.Db;
//import com.mybatisflex.core.row.Row;
//import com.mybatisflex.core.row.RowUtil;
//
//import java.util.Arrays;
//import java.util.Collection;
//import java.util.HashSet;
//import java.util.List;
//
///**
// * 统一数据库操作类
// *
// * @author WangYongJi
// * @since 2023-08-05
// */
//public class DB {
////
////    public static long update(Class<?> tClass, JSONObject entity) {
////        QueryWrapper wrapper = new QueryWrapper();
////        wrapper.where(" id = ?", JSONObject.parseObject(JSONObject.toJSONString(entity)).getString("id"));
////        return update_(DbKit.tableName(tClass), entity, wrapper, null);
////    }
//
//    private static long update_(String tableName, Object entity, QueryWrapper updateQuery, String dataSourceKey) {
//        try {
//            if (dataSourceKey != null) {
//                DataSourceKey.use(dataSourceKey);
//            }
//
//            DbKit.fillUpdate(entity);
//
//            if (tableName == null) {
//                tableName = DbKit.tableName(entity);
//            }
//            HashSet<?> columns = DbKit.columns_(entity);
//            return DbKit.baseMapper().update(tableName, columns, entity, DbKit.getWhereSQL(updateQuery.toSQL()));
//        } finally {
//            if (dataSourceKey != null) {
//                DataSourceKey.clear();
//            }
//        }
//    }
//
//    private static long updateByKeys_(String tableName, Object entity, String idsColumn, Collection<?> ids, String dataSourceKey) {
//        try {
//            if (ids.size() == 0) return 0;
//
//            if (dataSourceKey != null) {
//                DataSourceKey.use(dataSourceKey);
//            }
//
//            DbKit.fillUpdate(entity);
//
//            if (tableName == null) {
//                tableName = DbKit.tableName(entity);
//            }
//            HashSet<?> columns = DbKit.columns_(entity);
//
//            return DbKit.baseMapper().updateByKeys(tableName, columns, entity, idsColumn, ids);
//        } finally {
//            if (dataSourceKey != null) {
//                DataSourceKey.clear();
//            }
//        }
//    }
//
//    /**
//     * 查询数据--最底层实现
//     *
//     * @param sqlStr         sql字符串
//     * @param dataSourceKey  数据源
//     * @param returnObjClass 返回数据类型
//     * @return 操作记录数量
//     */
//    private static <T> List<T> selectList_(String sqlStr, Class<T> returnObjClass, String dataSourceKey) {
//        try {
//            if (dataSourceKey != null) {
//                DataSourceKey.use(dataSourceKey);
//            }
//
//            List<Row> rows = Db.selectListBySql(sqlStr);
//            //            ArrayList<Map<String, Object>> camelCase = DbKit.toCamelCase(rows);
//
//            if (returnObjClass == null) {
//                return (List<T>) JSONArray.parseArray(JSONObject.toJSONString(rows));
//            }
//            return JSONArray.parseArray(JSONObject.toJSONString(rows), returnObjClass);
//        } finally {
//            if (dataSourceKey != null) {
//                DataSourceKey.clear();
//            }
//        }
//    }
//
//    /**
//     * 查询数据--最底层实现
//     *
//     * @param sqlStr        sql字符串
//     * @param dataSourceKey 数据源
//     * @return 操作记录数量
//     */
//    private static <T> List<Object> selectObjList_(String sqlStr, String dataSourceKey) {
//        try {
//            if (dataSourceKey != null) {
//                DataSourceKey.use(dataSourceKey);
//            }
//            return Db.selectObjectList(sqlStr);
//        } finally {
//            if (dataSourceKey != null) {
//                DataSourceKey.clear();
//            }
//        }
//    }
//
//    /**
//     * 查询数据--最底层实现
//     *
//     * @param sqlStr        sql字符串
//     * @param dataSourceKey 数据源
//     * @return 操作记录数量
//     */
//    private static <T> long count_(String sqlStr, String dataSourceKey) {
//        try {
//            if (dataSourceKey != null) {
//                DataSourceKey.use(dataSourceKey);
//            }
//            return Db.selectCount(sqlStr);
//        } finally {
//            if (dataSourceKey != null) {
//                DataSourceKey.clear();
//            }
//        }
//    }
//
//    private static <T> List<T> listByKey_(String tableName, Class<?> tableClass, String selectColumn, String tableColumnKey, Collection<?> tableColumnValues, Class<T> returnObjClass, String dataSourceKey) {
//        try {
//            QueryWrapper wrapper = listByKeyWrapper_(tableName, tableClass, selectColumn, tableColumnKey, tableColumnValues, dataSourceKey);
//
//            List<Row> rows = Db.selectListByQuery(wrapper);
////            ArrayList<Map<String, Object>> camelCase = DbKit.toCamelCase(rows);
//
//            if (returnObjClass == null) {
//                return (List<T>) JSONArray.parseArray(JSONObject.toJSONString(rows));
//            }
//            return JSONArray.parseArray(JSONObject.toJSONString(rows), returnObjClass);
//        } finally {
//            if (dataSourceKey != null) {
//                DataSourceKey.clear();
//            }
//        }
//    }
//
//    private static List<Object> listObjectByKey_(String tableName, Class<?> tableClass, String selectColumn, String tableColumnKey, Collection<?> tableColumnValues, String dataSourceKey) {
//        try {
//
//            QueryWrapper wrapper = listByKeyWrapper_(tableName, tableClass, selectColumn, tableColumnKey, tableColumnValues, dataSourceKey);
//
//            return Db.selectObjectList(wrapper);
//
//        } finally {
//            if (dataSourceKey != null) {
//                DataSourceKey.clear();
//            }
//        }
//    }
//
//    /**
//     * 分页数据--最底层实现
//     *
//     * @param sqlStr         sql字符串
//     * @param returnObjClass 返回数据类型
//     * @param dataSourceKey  数据源
//     * @param pageNumber     第几页
//     * @param pageSize       分页长度
//     * @return Page
//     */
//    private static <T> Page<T> page_(String sqlStr, Class<T> returnObjClass, String dataSourceKey, int pageNumber, int pageSize) {
//        try {
//            if (dataSourceKey != null) {
//                DataSourceKey.use(dataSourceKey);
//            }
//            //
//            Page<T> page = new Page<>();
//            page.setPageNumber(pageNumber);
//            page.setPageSize(pageSize);
//
//            //多少条
//            String totalSql = " select count(*) total from (" + sqlStr + ") aaa ";
//            long totalCount = count(totalSql);
//            page.setTotal(totalCount);
//
//            //多少页
//            long pageCount = (totalCount + pageSize - 1) / pageSize;
//            page.setPageCount(pageCount);
//
//            //返回数据
//            String recordsSql = sqlStr + " limit " + ((pageNumber - 1) * pageSize) + "," + pageSize;
//            List<T> records = list(recordsSql, returnObjClass, dataSourceKey);
//            page.setRecords(records);
//            return page;
//        } finally {
//            if (dataSourceKey != null) {
//                DataSourceKey.clear();
//            }
//        }
//    }
//
//    /**
//     * 插入数据--最底层实现
//     *
//     * @param dataSourceKey 数据源
//     * @param list          数据
//     * @param tableName     表名
//     * @return 操作记录数量
//     */
//    private static long insertBatch_(String dataSourceKey, List<?> list, String tableName) {
//        try {
//            if (dataSourceKey != null) {
//                DataSourceKey.use(dataSourceKey);
//            }
//            for (Object o : list) {
//                DbKit.fillInsert(o);
//            }
//            if (tableName == null) {
//                tableName = DbKit.tableName(list.get(0));
//            }
//            return DbKit.baseMapper().saveBatch(tableName, DbKit.columns_(list.get(0)), list);
//        } finally {
//            if (dataSourceKey != null) {
//                DataSourceKey.clear();
//            }
//        }
//    }
//
//    /**
//     * 删除数据--最底层实现
//     *
//     * @param tableClass    实体类型
//     * @param tableName     表名
//     * @param ids           条件值
//     * @param dataSourceKey 数据源
//     * @param idColumn      条件字段
//     * @return 操作记录数量
//     */
//    private static long delByKeys_(Class<?> tableClass, String tableName, Collection<?> ids, String dataSourceKey, String idColumn) {
//        try {
//            if (ids.size() == 0) return 0;
//
//            if (dataSourceKey != null) {
//                DataSourceKey.use(dataSourceKey);
//            }
//            if (tableClass != null) {
//                return DbKit.baseMapper().deleteByKeys(DbKit.tableName(tableClass), idColumn, ids);
//            } else {
//                return DbKit.baseMapper().deleteByKeys(tableName, idColumn, ids);
//            }
//        } finally {
//            if (dataSourceKey != null) {
//                DataSourceKey.clear();
//            }
//        }
//    }
//
//    private static long del_(Class<?> tableClass, String tableName, QueryWrapper queryWrapper, String dataSourceKey) {
//        try {
//            if (dataSourceKey != null) {
//                DataSourceKey.use(dataSourceKey);
//            }
//            if (tableClass != null) {
//                return DbKit.baseMapper().deleteByStr(DbKit.tableName(tableClass), DbKit.getWhereSQL(queryWrapper.toSQL()));
//            } else {
//                return DbKit.baseMapper().deleteByStr(tableName, DbKit.getWhereSQL(queryWrapper.toSQL()));
//            }
//        } finally {
//            if (dataSourceKey != null) {
//                DataSourceKey.clear();
//            }
//        }
//    }
//
//    public static long update(Object entity) {
//        return update(entity, null);
//    }
//
//    public static long update(Object entity, String dataSourceKey) {
//        QueryWrapper updateQuery = new QueryWrapper();
//        updateQuery.where(" id = ?", JSONObject.parseObject(JSONObject.toJSONString(entity)).getString("id"));
//        return update_(null, entity, updateQuery, dataSourceKey);
//    }
//
//    public static long updateToDelete(Class<?> sysMenuClass, Collection<?> ids, String dataSourceKey) {
//        JSONObject jsonObject = new JSONObject();
//        DbKit.fillUpdate(jsonObject);
//        jsonObject.put("ss", "1");
//        return updateByKeys_(DbKit.tableName(sysMenuClass), jsonObject, "id", ids, dataSourceKey);
//    }
//
//    public static long updateToDelete(Class<?> sysMenuClass, Collection<?> ids) {
//        return updateToDelete(sysMenuClass, ids, null);
//    }
//
//    /**
//     * 插入数据
//     */
//    public static long insert(Object o) {
//        return insert(o, null);
//    }
//
//    public static long insert(Object o, String dataSourceKey) {
//        return insertBatch_(dataSourceKey, ArrayKit.asList(o), null);
//    }
//
//    public static long insert(String tableName, Object o) {
//        return insert(tableName, o, null);
//    }
//
//    public static long insert(String tableName, Object o, String dataSourceKey) {
//        return insertBatch_(dataSourceKey, ArrayKit.asList(o), tableName);
//    }
//
//    public static long insert(List<?> list) {
//        return insert(list, null);
//    }
//
//    public static long insert(List<?> list, String dataSourceKey) {
//        return insertBatch_(dataSourceKey, list, null);
//    }
//
//    public static long insert(String tableName, List<?> list) {
//        return insert(tableName, list, null);
//    }
//
//    public static long insert(String tableName, List<?> list, String dataSourceKey) {
//        return insertBatch_(dataSourceKey, list, tableName);
//    }
//
//
//    /**
//     * 删除数据
//     */
//    public static long delByIds(Class<?> poClass, String ids) {
//        return delByIds(poClass, ids, null);
//    }
//
//    public static long delByIds(Class<?> poClass, String ids, String dataSourceKey) {
//        return delByKeys_(poClass, null, StringKit.split(ids), dataSourceKey, "id");
//    }
//
//    public static long delByIds(Class<?> poClass, Collection<?> ids) {
//        return delByIds(poClass, ids, null);
//    }
//
//    public static long delByIds(Class<?> poClass, Collection<?> ids, String dataSourceKey) {
//        return delByKeys_(poClass, null, ids, dataSourceKey, "id");
//    }
//
//    public static long delByIds(String tableName, String ids) {
//        return delByIds(tableName, ids, null);
//    }
//
//    public static long delByIds(String tableName, String ids, String dataSourceKey) {
//        return delByKeys_(null, tableName, StringKit.split(ids), dataSourceKey, "id");
//    }
//
//    public static long delByIds(String tableName, Collection<?> ids) {
//        return delByIds(tableName, ids, null);
//    }
//
//    public static long delByIds(String tableName, Collection<?> ids, String dataSourceKey) {
//        return delByKeys_(null, tableName, ids, dataSourceKey, "id");
//    }
//
//
//    public static long delByKeys(Class<?> poClass, String ids, String columnKey) {
//        return delByKeys(poClass, ids, null, columnKey);
//    }
//
//    public static long delByKeys(Class<?> poClass, String ids, String dataSourceKey, String columnKey) {
//        return delByKeys_(poClass, null, StringKit.split(ids), dataSourceKey, columnKey);
//    }
//
//    public static long delByKeys(Class<?> poClass, Collection<?> ids, String columnKey) {
//        return delByKeys(poClass, ids, null, columnKey);
//    }
//
//    public static long delByKeys(Class<?> poClass, Collection<?> ids, String dataSourceKey, String columnKey) {
//        return delByKeys_(poClass, null, ids, dataSourceKey, columnKey);
//    }
//
//    public static long delByKeys(String tableName, String ids, String columnKey) {
//        return delByKeys(tableName, ids, null, columnKey);
//    }
//
//    public static long delByKeys(String tableName, String ids, String dataSourceKey, String columnKey) {
//        return delByKeys_(null, tableName, StringKit.split(ids), dataSourceKey, columnKey);
//    }
//
//    public static long delByKeys(String tableName, Collection<?> ids, String columnKey) {
//        return delByKeys(tableName, ids, null, columnKey);
//    }
//
//    public static long delByKeys(String tableName, Collection<?> ids, String dataSourceKey, String columnKey) {
//        return delByKeys_(null, tableName, ids, dataSourceKey, columnKey);
//    }
//
//    public static long del(String tableName, QueryWrapper queryWrapper) {
//        return del(tableName, queryWrapper, null);
//    }
//
//    public static long del(String tableName, QueryWrapper queryWrapper, String dataSourceKey) {
//        return del_(null, tableName, queryWrapper, dataSourceKey);
//    }
//
//    public static long del(Class<?> tableClass, QueryWrapper queryWrapper) {
//        return del(tableClass, queryWrapper, null);
//    }
//
//    public static long del(Class<?> tableClass, QueryWrapper queryWrapper, String dataSourceKey) {
//        return del_(tableClass, null, queryWrapper, dataSourceKey);
//    }
//
//    public static Page<JSONObject> page(PageSearch pageSearch, String querySql) {
//        return page_(querySql, null, null, pageSearch.getPageNumber(), pageSearch.getPageSize());
//    }
//
//    public static Page<JSONObject> page(PageSearch pageSearch, String querySql, String dataSourceKey) {
//        return page_(querySql, null, dataSourceKey, pageSearch.getPageNumber(), pageSearch.getPageSize());
//    }
//
//
//    public static Page<JSONObject> page(PageSearch pageSearch, QueryWrapper queryWrapper) {
//        return page(pageSearch, queryWrapper, true);
//    }
//
//    public static Page<JSONObject> page(PageSearch pageSearch, QueryWrapper queryWrapper, boolean fillQuery) {
//        DbKit.fillQuery(queryWrapper, fillQuery);
//        return page_(queryWrapper.toSQL(), null, null, pageSearch.getPageNumber(), pageSearch.getPageSize());
//    }
//
//    public static Page<JSONObject> page(PageSearch pageSearch, QueryWrapper queryWrapper, String dataSourceKey, boolean isFillQuery) {
//        DbKit.fillQuery(queryWrapper, isFillQuery);
//        return page_(queryWrapper.toSQL(), null, dataSourceKey, pageSearch.getPageNumber(), pageSearch.getPageSize());
//    }
//
//    public static Page<JSONObject> page(PageSearch pageSearch, QueryWrapper queryWrapper, String dataSourceKey) {
//        DbKit.fillQuery(queryWrapper, true);
//        return page_(queryWrapper.toSQL(), null, dataSourceKey, pageSearch.getPageNumber(), pageSearch.getPageSize());
//    }
//
//    public static <T> Page<T> page(PageSearch pageSearch, String querySql, Class<T> returnObjClass, String dataSourceKey) {
//        return page_(querySql, returnObjClass, dataSourceKey, pageSearch.getPageNumber(), pageSearch.getPageSize());
//    }
//
//    public static <T> Page<T> page(PageSearch pageSearch, QueryWrapper queryWrapper, Class<T> returnObjClass, String dataSourceKey, boolean isFillQuery) {
//        DbKit.fillQuery(queryWrapper, isFillQuery);
//
//        return page_(queryWrapper.toSQL(), returnObjClass, dataSourceKey, pageSearch.getPageNumber(), pageSearch.getPageSize());
//    }
//
//    public static <T> Page<T> page(PageSearch pageSearch, QueryWrapper queryWrapper, Class<T> returnObjClass, String dataSourceKey) {
//        DbKit.fillQuery(queryWrapper, true);
//
//        return page_(queryWrapper.toSQL(), returnObjClass, dataSourceKey, pageSearch.getPageNumber(), pageSearch.getPageSize());
//    }
//
//    public static <T> Page<T> page(PageSearch pageSearch, String querySql, Class<T> returnObjClass) {
//        return page_(querySql, returnObjClass, null, pageSearch.getPageNumber(), pageSearch.getPageSize());
//    }
//
//    public static <T> Page<T> page(PageSearch pageSearch, QueryWrapper queryWrapper, Class<T> returnObjClass, boolean isFillQuery) {
//        DbKit.fillQuery(queryWrapper, isFillQuery);
//
//        return page_(queryWrapper.toSQL(), returnObjClass, null, pageSearch.getPageNumber(), pageSearch.getPageSize());
//    }
//
//    public static <T> Page<T> page(PageSearch pageSearch, QueryWrapper queryWrapper, Class<T> returnObjClass) {
//        DbKit.fillQuery(queryWrapper, true);
//
//        return page_(queryWrapper.toSQL(), returnObjClass, null, pageSearch.getPageNumber(), pageSearch.getPageSize());
//    }
//
//
//    public static long count(String sqlStr) {
//        return count(sqlStr, null);
//    }
//
//    public static long count(String sqlStr, String dataSourceKey) {
//        return count_(sqlStr, dataSourceKey);
//    }
//
//    public static long count(QueryWrapper queryWrapper) {
//        return count(queryWrapper, null);
//    }
//
//    public static long count(QueryWrapper queryWrapper, String dataSourceKey, boolean isFillQuery) {
//        DbKit.fillQuery(queryWrapper, isFillQuery);
//        return count_(queryWrapper.toSQL(), dataSourceKey);
//    }
//
//    public static long count(QueryWrapper queryWrapper, String dataSourceKey) {
//        DbKit.fillQuery(queryWrapper, true);
//        return count_(queryWrapper.toSQL(), dataSourceKey);
//    }
//
//
//    public static Object selectObjById(Class<?> tableClass, String selectColumn, String tableColumnValue) {
//        return selectObjById(tableClass, selectColumn, tableColumnValue, null);
//    }
//
//    public static Object selectObjById(Class<?> tableClass, String selectColumn, String tableColumnValue, String dataSourceKey) {
//        List<Object> ts = listObjectByKey_(null, tableClass, selectColumn, "id", ArrayKit.asList(tableColumnValue), dataSourceKey);
//
//        if (ts.size() == 0) return null;
//
//        return ts.get(0);
//    }
//
//    public static Object selectObjById(String tableName, String selectColumn, String tableColumnValue) {
//        return selectObjById(tableName, selectColumn, tableColumnValue, null);
//    }
//
//    public static Object selectObjById(String tableName, String selectColumn, String tableColumnValue, String dataSourceKey) {
//        List<Object> ts = listObjectByKey_(tableName, null, selectColumn, "id", ArrayKit.asList(tableColumnValue), dataSourceKey);
//        if (ts.size() == 0) return null;
//        return ts.get(0);
//    }
//
//    public static List<Object> listObjById(Class<?> tableClass, String selectColumn, Collection<?> tableColumnValues) {
//        return listObjById(tableClass, selectColumn, tableColumnValues, null);
//    }
//
//    public static List<Object> listObjById(Class<?> tableClass, String selectColumn, Collection<?> tableColumnValues, String dataSourceKey) {
//        return listObjectByKey_(null, tableClass, selectColumn, "id", tableColumnValues, dataSourceKey);
//    }
//
//
//    public static List<Object> listObjById(String tableName, String selectColumn, Collection<?> tableColumnValues) {
//        return listObjById(tableName, selectColumn, tableColumnValues, null);
//    }
//
//    public static List<Object> listObjById(String tableName, String selectColumn, Collection<?> tableColumnValues, String dataSourceKey) {
//        return listObjectByKey_(tableName, null, selectColumn, "id", tableColumnValues, dataSourceKey);
//    }
//
//    //--------------------------------------------------------------------------------------------------------------------------------------------------------------------
//    //--------------------------------------------------------------------------------------------------------------------------------------------------------------------
//    //--------------------------------------------------------------------------------------------------------------------------------------------------------------------
//    public static Object selectObjByKey(Class<?> tableClass, String selectColumn, String tableColumnKey, String tableColumnValue) {
//        return selectObjByKey(tableClass, selectColumn, tableColumnKey, tableColumnValue, null);
//    }
//
//    public static Object selectObjByKey(Class<?> tableClass, String selectColumn, String tableColumnKey, String tableColumnValue, String dataSourceKey) {
//        List<Object> ts = listObjectByKey_(null, tableClass, selectColumn, tableColumnKey, ArrayKit.asList(tableColumnValue), dataSourceKey);
//        if (ts.size() == 0) return null;
//        return ts.get(0);
//    }
//
//    public static Object selectObjByKey(String tableName, String selectColumn, String tableColumnKey, String tableColumnValue) {
//        return selectObjByKey(tableName, selectColumn, tableColumnKey, tableColumnValue, null);
//    }
//
//    public static Object selectObjByKey(String tableName, String selectColumn, String tableColumnKey, String tableColumnValue, String dataSourceKey) {
//        List<Object> ts = listObjectByKey_(tableName, null, selectColumn, tableColumnKey, ArrayKit.asList(tableColumnValue), dataSourceKey);
//        if (ts.size() == 0) return null;
//        return ts.get(0);
//    }
//
//    public static List<Object> listObjByKey(Class<?> tableClass, String selectColumn, String tableColumnKey, Collection<?> tableColumnValues) {
//        return listObjByKey(tableClass, selectColumn, tableColumnKey, tableColumnValues, null);
//    }
//
//    public static List<Object> listObjByKey(Class<?> tableClass, String selectColumn, String tableColumnKey, Collection<?> tableColumnValues, String dataSourceKey) {
//        return listObjectByKey_(null, tableClass, selectColumn, tableColumnKey, tableColumnValues, dataSourceKey);
//    }
//
//    public static List<Object> listObjByKey(String tableName, String selectColumn, String tableColumnKey, Collection<?> tableColumnValues) {
//        return listObjByKey(tableName, selectColumn, tableColumnKey, tableColumnValues, null);
//    }
//
//    public static List<Object> listObjByKey(String tableName, String selectColumn, String tableColumnKey, Collection<?> tableColumnValues, String dataSourceKey) {
//        return listObjectByKey_(tableName, null, selectColumn, tableColumnKey, tableColumnValues, dataSourceKey);
//    }
//
//
//    //--------------------------------------------------------------------------------------------------------------------------------------------------------------------
//    //--------------------------------------------------------------------------------------------------------------------------------------------------------------------
//    //--------------------------------------------------------------------------------------------------------------------------------------------------------------------
//
//    public static <T> JSONObject selectOneById(String tableName, String selectColumn, String tableColumnValue) {
//        List<T> ts = listByKey_(tableName, null, selectColumn, "id", ArrayKit.asList(tableColumnValue), null, null);
//
//        if (ts.size() == 0) return null;
//
//        return (JSONObject) ts.get(0);
//    }
//
//    public static <T> JSONObject selectOneById(String tableName, String selectColumn, String tableColumnValue, String dataSourceKey) {
//        List<T> ts = listByKey_(tableName, null, selectColumn, "id", ArrayKit.asList(tableColumnValue), null, dataSourceKey);
//
//        if (ts.size() == 0) return null;
//
//        return (JSONObject) ts.get(0);
//    }
//
//    public static <T> T selectOneById(Class<T> tableClass, String selectColumn, String tableColumnValue) {
//        List<T> ts = listByKey_(null, tableClass, selectColumn, "id", ArrayKit.asList(tableColumnValue), tableClass, null);
//
//        if (ts.size() == 0) return null;
//
//        return ts.get(0);
//    }
//
//    public static <T> T selectOneById(Class<T> tableClass, String selectColumn, String tableColumnValue, String dataSourceKey) {
//        List<T> ts = listByKey_(null, tableClass, selectColumn, "id", ArrayKit.asList(tableColumnValue), tableClass, dataSourceKey);
//
//        if (ts.size() == 0) return null;
//
//        return ts.get(0);
//    }
//
//
//    public static <T> T selectOneById(Class<?> tableClass, String selectColumn, String tableColumnValue, Class<T> returnObjClass) {
//        List<T> ts = listByKey_(null, tableClass, selectColumn, "id", ArrayKit.asList(tableColumnValue), returnObjClass, null);
//
//        if (ts.size() == 0) return null;
//
//        return ts.get(0);
//    }
//
//    public static <T> T selectOneById(String tableName, String selectColumn, String tableColumnValue, Class<T> returnObjClass) {
//        List<T> ts = listByKey_(tableName, null, selectColumn, "id", ArrayKit.asList(tableColumnValue), returnObjClass, null);
//
//        if (ts.size() == 0) return null;
//
//        return ts.get(0);
//    }
//
//    public static <T> T selectOneById(Class<?> tableClass, String selectColumn, String tableColumnValue, Class<T> returnObjClass, String dataSourceKey) {
//        List<T> ts = listByKey_(null, tableClass, selectColumn, "id", ArrayKit.asList(tableColumnValue), returnObjClass, dataSourceKey);
//
//        if (ts.size() == 0) return null;
//
//        return ts.get(0);
//    }
//
//    public static <T> T selectOneById(String tableName, String selectColumn, String tableColumnValue, Class<T> returnObjClass, String dataSourceKey) {
//        List<T> ts = listByKey_(tableName, null, selectColumn, "id", ArrayKit.asList(tableColumnValue), returnObjClass, dataSourceKey);
//
//        if (ts.size() == 0) return null;
//
//        return ts.get(0);
//    }
//    //--------------------------------------------------------------------------------------------------------------------------------------------------------------------
//    //--------------------------------------------------------------------------------------------------------------------------------------------------------------------
//    //--------------------------------------------------------------------------------------------------------------------------------------------------------------------
//
//
//    public static <T> T selectOneByKey(Class<T> tableClass, String selectColumn, String tableColumnKey, String tableColumnValue) {
//        List<T> ts = listByKey_(null, tableClass, selectColumn, tableColumnKey, ArrayKit.asList(tableColumnValue), tableClass, null);
//
//        if (ts.size() == 0) return null;
//
//        return ts.get(0);
//    }
//
//    public static <T> JSONObject selectOneByKey(String tableName, String selectColumn, String tableColumnKey, String tableColumnValue) {
//        List<T> ts = listByKey_(tableName, null, selectColumn, tableColumnKey, ArrayKit.asList(tableColumnValue), null, null);
//
//        if (ts.size() == 0) return null;
//
//        return (JSONObject) ts.get(0);
//    }
//
//    public static <T> T selectOneByKey(Class<T> tableClass, String selectColumn, String tableColumnKey, String tableColumnValue, String dataSourceKey) {
//        List<T> ts = listByKey_(null, tableClass, selectColumn, tableColumnKey, ArrayKit.asList(tableColumnValue), tableClass, dataSourceKey);
//
//        if (ts.size() == 0) return null;
//
//        return ts.get(0);
//    }
//
//    public static <T> JSONObject selectOneByKey(String tableName, String selectColumn, String tableColumnKey, String tableColumnValue, String dataSourceKey) {
//        List<T> ts = listByKey_(tableName, null, selectColumn, tableColumnKey, ArrayKit.asList(tableColumnValue), null, dataSourceKey);
//
//        if (ts.size() == 0) return null;
//
//        return (JSONObject) ts.get(0);
//    }
//
//    public static <T> T selectOneByKey(Class<?> tableClass, String selectColumn, String tableColumnKey, String tableColumnValue, Class<T> returnObjClass) {
//        List<T> ts = listByKey_(null, tableClass, selectColumn, tableColumnKey, ArrayKit.asList(tableColumnValue), returnObjClass, null);
//
//        if (ts.size() == 0) return null;
//
//        return ts.get(0);
//    }
//
//    public static <T> T selectOneByKey(String tableName, String selectColumn, String tableColumnKey, String tableColumnValue, Class<T> returnObjClass) {
//        List<T> ts = listByKey_(tableName, null, selectColumn, tableColumnKey, ArrayKit.asList(tableColumnValue), returnObjClass, null);
//
//        if (ts.size() == 0) return null;
//
//        return ts.get(0);
//    }
//
//    public static <T> T selectOneByKey(Class<?> tableClass, String selectColumn, String tableColumnKey, String tableColumnValue, Class<T> returnObjClass, String dataSourceKey) {
//        List<T> ts = listByKey_(null, tableClass, selectColumn, tableColumnKey, ArrayKit.asList(tableColumnValue), returnObjClass, dataSourceKey);
//
//        if (ts.size() == 0) return null;
//
//        return ts.get(0);
//    }
//
//    public static <T> T selectOneByKey(String tableName, String selectColumn, String tableColumnKey, String tableColumnValue, Class<T> returnObjClass, String dataSourceKey) {
//        List<T> ts = listByKey_(tableName, null, selectColumn, tableColumnKey, ArrayKit.asList(tableColumnValue), returnObjClass, dataSourceKey);
//
//        if (ts.size() == 0) return null;
//
//        return ts.get(0);
//    }
//
//    //--------------------------------------------------------------------------------------------------------------------------------------------------------------------
//    //--------------------------------------------------------------------------------------------------------------------------------------------------------------------
//    //--------------------------------------------------------------------------------------------------------------------------------------------------------------------
//
//
//    public static <T> List<JSONObject> listById(Class<?> tableClass, String selectColumn, Collection<?> tableColumnValues) {
//        return listByKey_(null, tableClass, selectColumn, "id", tableColumnValues, null, null);
//    }
//
//    public static <T> List<JSONObject> listById(String tableName, String selectColumn, Collection<?> tableColumnValues) {
//        return listByKey_(tableName, null, selectColumn, "id", tableColumnValues, null, null);
//    }
//
//    public static <T> List<JSONObject> listById(Class<?> tableClass, String selectColumn, Collection<?> tableColumnValues, String dataSourceKey) {
//        return listByKey_(null, tableClass, selectColumn, "id", tableColumnValues, null, dataSourceKey);
//    }
//
//    public static <T> List<JSONObject> listById(String tableName, String selectColumn, Collection<?> tableColumnValues, String dataSourceKey) {
//        return listByKey_(tableName, null, selectColumn, "id", tableColumnValues, null, dataSourceKey);
//    }
//
//    public static <T> List<T> listById(Class<?> tableClass, String selectColumn, Collection<?> tableColumnValues, Class<T> returnObjClass) {
//        return listByKey_(null, tableClass, selectColumn, "id", tableColumnValues, returnObjClass, null);
//    }
//
//    public static <T> List<T> listById(String tableName, String selectColumn, Collection<?> tableColumnValues, Class<T> returnObjClass) {
//        return listByKey_(tableName, null, selectColumn, "id", tableColumnValues, returnObjClass, null);
//    }
//
//    public static <T> List<T> listById(Class<?> tableClass, String selectColumn, Collection<?> tableColumnValues, Class<T> returnObjClass, String dataSourceKey) {
//        return listByKey_(null, tableClass, selectColumn, "id", tableColumnValues, returnObjClass, dataSourceKey);
//    }
//
//    public static <T> List<T> listById(String tableName, String selectColumn, Collection<?> tableColumnValues, Class<T> returnObjClass, String dataSourceKey) {
//        return listByKey_(tableName, null, selectColumn, "id", tableColumnValues, returnObjClass, dataSourceKey);
//    }
//
//    //--------------------------------------------------------------------------------------------------------------------------------------------------------------------
//    //--------------------------------------------------------------------------------------------------------------------------------------------------------------------
//    //--------------------------------------------------------------------------------------------------------------------------------------------------------------------
//
//    public static <T> List<JSONObject> listByKey(Class<?> tableClass, String selectColumn, String tableColumnKey, Collection<?> tableColumnValues) {
//        return listByKey_(null, tableClass, selectColumn, tableColumnKey, tableColumnValues, null, null);
//    }
//
//    public static <T> List<JSONObject> listByKey(String tableName, String selectColumn, String tableColumnKey, Collection<?> tableColumnValues) {
//        return listByKey_(tableName, null, selectColumn, tableColumnKey, tableColumnValues, null, null);
//    }
//
//    public static <T> List<JSONObject> listByKey(Class<?> tableClass, String selectColumn, String tableColumnKey, Collection<?> tableColumnValues, String dataSourceKey) {
//        return listByKey_(null, tableClass, selectColumn, tableColumnKey, tableColumnValues, null, dataSourceKey);
//    }
//
//    public static <T> List<JSONObject> listByKey(String tableName, String selectColumn, String tableColumnKey, Collection<?> tableColumnValues, String dataSourceKey) {
//        return listByKey_(tableName, null, selectColumn, tableColumnKey, tableColumnValues, null, dataSourceKey);
//    }
//
//    public static <T> List<T> listByKey(Class<?> tableClass, String selectColumn, String tableColumnKey, Collection<?> tableColumnValues, Class<T> returnObjClass) {
//        return listByKey_(null, tableClass, selectColumn, tableColumnKey, tableColumnValues, returnObjClass, null);
//    }
//
//    public static <T> List<T> listByKey(String tableName, String selectColumn, String tableColumnKey, Collection<?> tableColumnValues, Class<T> returnObjClass) {
//        return listByKey_(tableName, null, selectColumn, tableColumnKey, tableColumnValues, returnObjClass, null);
//    }
//
//    public static <T> List<T> listByKey(Class<?> tableClass, String selectColumn, String tableColumnKey, Collection<?> tableColumnValues, Class<T> returnObjClass, String dataSourceKey) {
//        return listByKey_(null, tableClass, selectColumn, tableColumnKey, tableColumnValues, returnObjClass, dataSourceKey);
//    }
//
//    public static <T> List<T> listByKey(String tableName, String selectColumn, String tableColumnKey, Collection<?> tableColumnValues, Class<T> returnObjClass, String dataSourceKey) {
//        return listByKey_(tableName, null, selectColumn, tableColumnKey, tableColumnValues, returnObjClass, dataSourceKey);
//    }
//
//    //--------------------------------------------------------------------------------------------------------------------------------------------------------------------
//    //--------------------------------------------------------------------------------------------------------------------------------------------------------------------
//    //--------------------------------------------------------------------------------------------------------------------------------------------------------------------
//
//    public static Object selectObj(String sqlStr) {
//        List<Object> ts = selectObjList_(sqlStr, null);
//
//        if (ts.size() == 0) return null;
//
//        return ts.get(0);
//    }
//
//    public static Object selectObj(String sqlStr, String dataSourceKey) {
//        List<Object> ts = selectObjList_(sqlStr, dataSourceKey);
//
//        if (ts.size() == 0) return null;
//
//        return ts.get(0);
//    }
//
//    public static Object selectObj(QueryWrapper queryWrapper, boolean isFillQuery) {
//        DbKit.fillQuery(queryWrapper, isFillQuery);
//
//        List<Object> ts = selectObjList_(queryWrapper.toSQL(), null);
//
//        if (ts.size() == 0) return null;
//
//        return ts.get(0);
//    }
//
//    public static Object selectObj(QueryWrapper queryWrapper) {
//        DbKit.fillQuery(queryWrapper, true);
//
//        List<Object> ts = selectObjList_(queryWrapper.toSQL(), null);
//
//        if (ts.size() == 0) return null;
//
//        return ts.get(0);
//    }
//
//    public static Object selectObj(QueryWrapper queryWrapper, String dataSourceKey, boolean isFillQuery) {
//        DbKit.fillQuery(queryWrapper, isFillQuery);
//
//        List<Object> ts = selectObjList_(queryWrapper.toSQL(), dataSourceKey);
//
//        if (ts.size() == 0) return null;
//
//        return ts.get(0);
//    }
//
//    public static Object selectObj(QueryWrapper queryWrapper, String dataSourceKey) {
//        DbKit.fillQuery(queryWrapper, true);
//
//        List<Object> ts = selectObjList_(queryWrapper.toSQL(), dataSourceKey);
//
//        if (ts.size() == 0) return null;
//
//        return ts.get(0);
//    }
//
//    //--------------------------------------------------------------------------------------------------------------------------------------------------------------------
//    //--------------------------------------------------------------------------------------------------------------------------------------------------------------------
//    //--------------------------------------------------------------------------------------------------------------------------------------------------------------------
//
//    public static List<Object> listObj(String sqlStr) {
//        return selectObjList_(sqlStr, null);
//    }
//
//    public static List<Object> listObj(String sqlStr, String dataSourceKey) {
//        return selectObjList_(sqlStr, dataSourceKey);
//    }
//
//    public static List<Object> listObj(QueryWrapper queryWrapper, String dataSourceKey, boolean isFillQuery) {
//        DbKit.fillQuery(queryWrapper, isFillQuery);
//
//        return selectObjList_(queryWrapper.toSQL(), dataSourceKey);
//    }
//
//    public static List<Object> listObj(QueryWrapper queryWrapper, String dataSourceKey) {
//        DbKit.fillQuery(queryWrapper, true);
//
//        return selectObjList_(queryWrapper.toSQL(), dataSourceKey);
//    }
//
//    public static List<Object> listObj(QueryWrapper queryWrapper, boolean isFillQuery) {
//        DbKit.fillQuery(queryWrapper, isFillQuery);
//
//        return selectObjList_(queryWrapper.toSQL(), null);
//    }
//
//    public static List<Object> listObj(QueryWrapper queryWrapper) {
//        DbKit.fillQuery(queryWrapper, true);
//
//        return selectObjList_(queryWrapper.toSQL(), null);
//    }
//    //--------------------------------------------------------------------------------------------------------------------------------------------------------------------
//    //--------------------------------------------------------------------------------------------------------------------------------------------------------------------
//    //--------------------------------------------------------------------------------------------------------------------------------------------------------------------
//
//
//    public static JSONObject selectOne(String sqlStr) {
//        List<JSONObject> ts = selectList_(sqlStr, null, null);
//
//        if (ts.size() == 0) return null;
//
//        return ts.get(0);
//    }
//
//    public static JSONObject selectOne(String sqlStr, String dataSourceKey) {
//        List<JSONObject> ts = selectList_(sqlStr, null, dataSourceKey);
//
//        if (ts.size() == 0) return null;
//
//        return ts.get(0);
//    }
//
//    public static <T> T selectOne(String sqlStr, Class<T> returnObjClass) {
//        List<T> ts = selectList_(sqlStr, returnObjClass, null);
//
//        if (ts.size() == 0) return null;
//
//        return ts.get(0);
//    }
//
//    public static <T> T selectOne(String sqlStr, Class<T> returnObjClass, String dataSourceKey) {
//        List<T> ts = selectList_(sqlStr, returnObjClass, dataSourceKey);
//
//        if (ts.size() == 0) return null;
//
//        return ts.get(0);
//    }
//
//    public static JSONObject selectOne(QueryWrapper queryWrapper, boolean isFillQuery) {
//        DbKit.fillQuery(queryWrapper, isFillQuery);
//
//        List<JSONObject> ts = selectList_(queryWrapper.toSQL(), null, null);
//
//        if (ts.size() == 0) return null;
//
//        return ts.get(0);
//    }
//
//    public static JSONObject selectOne(QueryWrapper queryWrapper) {
//        DbKit.fillQuery(queryWrapper, true);
//
//        List<JSONObject> ts = selectList_(queryWrapper.toSQL(), null, null);
//
//        if (ts.size() == 0) return null;
//
//        return ts.get(0);
//    }
//
//    public static JSONObject selectOne(QueryWrapper queryWrapper, String dataSourceKey, boolean isFillQuery) {
//        DbKit.fillQuery(queryWrapper, isFillQuery);
//
//        List<JSONObject> ts = selectList_(queryWrapper.toSQL(), null, dataSourceKey);
//
//        if (ts.size() == 0) return null;
//
//        return ts.get(0);
//    }
//
//    public static JSONObject selectOne(QueryWrapper queryWrapper, String dataSourceKey) {
//        DbKit.fillQuery(queryWrapper, true);
//
//        List<JSONObject> ts = selectList_(queryWrapper.toSQL(), null, dataSourceKey);
//
//        if (ts.size() == 0) return null;
//
//        return ts.get(0);
//    }
//
//    public static <T> T selectOne(QueryWrapper queryWrapper, Class<T> returnObjClass, boolean isFillQuery) {
//        DbKit.fillQuery(queryWrapper, isFillQuery);
//
//        List<T> ts = selectList_(queryWrapper.toSQL(), returnObjClass, null);
//
//        if (ts.size() == 0) return null;
//
//        return ts.get(0);
//    }
//
//    public static <T> T selectOne(QueryWrapper queryWrapper, Class<T> returnObjClass) {
//        DbKit.fillQuery(queryWrapper, true);
//
//        List<T> ts = selectList_(queryWrapper.toSQL(), returnObjClass, null);
//
//        if (ts.size() == 0) return null;
//
//        return ts.get(0);
//    }
//
//    public static <T> T selectOne(QueryWrapper queryWrapper, Class<T> returnObjClass, String dataSourceKey, boolean isFillQuery) {
//        DbKit.fillQuery(queryWrapper, isFillQuery);
//
//        List<T> ts = selectList_(queryWrapper.toSQL(), returnObjClass, dataSourceKey);
//
//        if (ts.size() == 0) return null;
//
//        return ts.get(0);
//    }
//
//    public static <T> T selectOne(QueryWrapper queryWrapper, Class<T> returnObjClass, String dataSourceKey) {
//        DbKit.fillQuery(queryWrapper, true);
//
//        List<T> ts = selectList_(queryWrapper.toSQL(), returnObjClass, dataSourceKey);
//
//        if (ts.size() == 0) return null;
//
//        return ts.get(0);
//    }
//
//    //--------------------------------------------------------------------------------------------------------------------------------------------------------------------
//    //--------------------------------------------------------------------------------------------------------------------------------------------------------------------
//    //--------------------------------------------------------------------------------------------------------------------------------------------------------------------
//
//    public static List<JSONObject> list(String sqlStr) {
//        return selectList_(sqlStr, null, null);
//    }
//
//    public static List<JSONObject> list(String sqlStr, String dataSourceKey) {
//        return selectList_(sqlStr, null, dataSourceKey);
//    }
//
//    public static <T> List<T> list(String sqlStr, Class<T> returnObjClass, String dataSourceKey) {
//        return selectList_(sqlStr, returnObjClass, dataSourceKey);
//    }
//
//    public static <T> List<T> list(String sqlStr, Class<T> returnObjClass) {
//        return selectList_(sqlStr, returnObjClass, null);
//    }
//
//    public static List<JSONObject> list(QueryWrapper queryWrapper, boolean isFillQuery) {
//        DbKit.fillQuery(queryWrapper, isFillQuery);
//
//        return selectList_(queryWrapper.toSQL(), null, null);
//    }
//
//    public static List<JSONObject> list(QueryWrapper queryWrapper) {
//        DbKit.fillQuery(queryWrapper, true);
//
//        return selectList_(queryWrapper.toSQL(), null, null);
//    }
//
//    public static List<JSONObject> list(QueryWrapper queryWrapper, String dataSourceKey, boolean isFillQuery) {
//        DbKit.fillQuery(queryWrapper, isFillQuery);
//        return selectList_(queryWrapper.toSQL(), null, dataSourceKey);
//    }
//
//    public static List<JSONObject> list(QueryWrapper queryWrapper, String dataSourceKey) {
//        DbKit.fillQuery(queryWrapper, true);
//        return selectList_(queryWrapper.toSQL(), null, dataSourceKey);
//    }
//
//    public static <T> List<T> list(QueryWrapper queryWrapper, Class<T> returnObjClass) {
//        DbKit.fillQuery(queryWrapper, true);
//
//        return selectList_(queryWrapper.toSQL(), returnObjClass, null);
//    }
//
//    public static <T> List<T> list(QueryWrapper queryWrapper, Class<T> returnObjClass, boolean isFillQuery) {
//        DbKit.fillQuery(queryWrapper, isFillQuery);
//
//        return selectList_(queryWrapper.toSQL(), returnObjClass, null);
//    }
//
//    public static <T> List<T> list(QueryWrapper queryWrapper, Class<T> returnObjClass, String dataSourceKey, boolean isFillQuery) {
//        DbKit.fillQuery(queryWrapper, isFillQuery);
//
//        return selectList_(queryWrapper.toSQL(), returnObjClass, dataSourceKey);
//    }
//
//    public static <T> List<T> list(QueryWrapper queryWrapper, Class<T> returnObjClass, String dataSourceKey) {
//        DbKit.fillQuery(queryWrapper, true);
//
//        return selectList_(queryWrapper.toSQL(), returnObjClass, dataSourceKey);
//    }
//
//
//    private static QueryWrapper listByKeyWrapper_(String tableName, Class<?> tableClass, String selectColumn, String tableColumnKey, Collection<?> tableColumnValues, String dataSourceKey) {
//        if (dataSourceKey != null) {
//            DataSourceKey.use(dataSourceKey);
//        }
//
//        if (StringKit.isBlank(selectColumn)) {
//            selectColumn = " * ";
//        }
//
//        if (StringKit.isBlank(tableName)) {
//            tableName = DbKit.tableName(tableClass);
//        }
//
//        return QueryWrapper.create().select(selectColumn).from(tableName).where(DbKit.keyIn(tableColumnKey, tableColumnValues));
//    }
//
//}
//
//
////    public static <T> T selectOneByKey(Class<?> tableClass, String tableColumnKey, String tableColumnValue) {
////        List<T> ts = listByKey_(null, tableClass, null, tableColumnKey, ArrayKit.asList(tableColumnValue), null, null);
////
////        if (ts.size() == 0) return null;
////
////        return ts.get(0);
////    }
////
////    public static <T> T selectOneByKey(String tableName, String tableColumnKey, String tableColumnValue) {
////        List<T> ts = listByKey_(tableName, null, null, tableColumnKey, ArrayKit.asList(tableColumnValue), null, null);
////
////        if (ts.size() == 0) return null;
////
////        return ts.get(0);
////    }
////    public static <T> T selectOneByKey(Class<?> tableClass, String tableColumnKey, String tableColumnValue, Class<T> returnObjClass) {
////        List<T> ts = listByKey_(null, tableClass, null, tableColumnKey, ArrayKit.asList(tableColumnValue), returnObjClass, null);
////
////        if (ts.size() == 0) return null;
////
////        return ts.get(0);
////    }
////
////    public static <T> T selectOneByKey(String tableName, String tableColumnKey, String tableColumnValue, Class<T> returnObjClass) {
////        List<T> ts = listByKey_(tableName, null, null, tableColumnKey, ArrayKit.asList(tableColumnValue), returnObjClass, null);
////
////        if (ts.size() == 0) return null;
////
////        return ts.get(0);
////    }
////
////    public static <T> T selectOneByKey(Class<?> tableClass, String tableColumnKey, String tableColumnValue, Class<T> returnObjClass, String dataSourceKey) {
////        List<T> ts = listByKey_(null, tableClass, null, tableColumnKey, ArrayKit.asList(tableColumnValue), returnObjClass, dataSourceKey);
////
////        if (ts.size() == 0) return null;
////
////        return ts.get(0);
////    }
////
////    public static <T> T selectOneByKey(String tableName, String tableColumnKey, String tableColumnValue, Class<T> returnObjClass, String dataSourceKey) {
////        List<T> ts = listByKey_(tableName, null, null, tableColumnKey, ArrayKit.asList(tableColumnValue), returnObjClass, dataSourceKey);
////
////        if (ts.size() == 0) return null;
////
////        return ts.get(0);
////    }
//
////
////
////
////    public static <T> T selectOneById(Class<?> tableClass, String tableColumnValue) {
////        List<T> ts = listByKey_(null, tableClass, null, "id", ArrayKit.asList(tableColumnValue), null, null);
////
////        if (ts.size() == 0) return null;
////
////        return ts.get(0);
////    }
////
////    public static <T> T selectOneById(String tableName, String tableColumnValue) {
////        List<T> ts = listByKey_(tableName, null, null, "id", ArrayKit.asList(tableColumnValue), null, null);
////
////        if (ts.size() == 0) return null;
////
////        return ts.get(0);
////    }
////
////
////    public static <T> T selectOneById(Class<?> tableClass, String tableColumnValue, Class<T> returnObjClass) {
////        List<T> ts = listByKey_(null, tableClass, null, "id", ArrayKit.asList(tableColumnValue), returnObjClass, null);
////
////        if (ts.size() == 0) return null;
////
////        return ts.get(0);
////    }
////
////    public static <T> T selectOneById(String tableName, String tableColumnValue, Class<T> returnObjClass) {
////        List<T> ts = listByKey_(tableName, null, null, "id", ArrayKit.asList(tableColumnValue), returnObjClass, null);
////
////        if (ts.size() == 0) return null;
////
////        return ts.get(0);
////    }
////
////    public static <T> T selectOneById(Class<?> tableClass, String tableColumnValue, Class<T> returnObjClass, String dataSourceKey) {
////        List<T> ts = listByKey_(null, tableClass, null, "id", ArrayKit.asList(tableColumnValue), returnObjClass, dataSourceKey);
////
////        if (ts.size() == 0) return null;
////
////        return ts.get(0);
////    }
////
////    public static <T> T selectOneById(String tableName, String tableColumnValue, Class<T> returnObjClass, String dataSourceKey) {
////        List<T> ts = listByKey_(tableName, null, null, "id", ArrayKit.asList(tableColumnValue), returnObjClass, dataSourceKey);
////
////        if (ts.size() == 0) return null;
////
////        return ts.get(0);
////    }
////
//
//
////    public static <T> List<T> listByKey(Class<?> tableClass, String tableColumnKey, Collection<?> tableColumnValues) {
////        return listByKey_(null, tableClass, null, tableColumnKey, tableColumnValues, null, null);
////    }
////
////    public static <T> List<T> listByKey(String tableName, String tableColumnKey, Collection<?> tableColumnValues) {
////        return listByKey_(tableName, null, null, tableColumnKey, tableColumnValues, null, null);
////    }
////
////    public static <T> List<T> listByKey(Class<?> tableClass, String tableColumnKey, Collection<?> tableColumnValues, String dataSourceKey) {
////        return listByKey_(null, tableClass, null, tableColumnKey, tableColumnValues, null, dataSourceKey);
////    }
////
////    public static <T> List<T> listByKey(String tableName, String tableColumnKey, Collection<?> tableColumnValues, String dataSourceKey) {
////        return listByKey_(tableName, null, null, tableColumnKey, tableColumnValues, null, dataSourceKey);
////    }
////
////    public static <T> List<T> listByKey(Class<?> tableClass, String tableColumnKey, Collection<?> tableColumnValues, Class<T> returnObjClass) {
////        return listByKey_(null, tableClass, null, tableColumnKey, tableColumnValues, returnObjClass, null);
////    }
////
////    public static <T> List<T> listByKey(String tableName, String tableColumnKey, Collection<?> tableColumnValues, Class<T> returnObjClass) {
////        return listByKey_(tableName, null, null, tableColumnKey, tableColumnValues, returnObjClass, null);
////    }
////
////    public static <T> List<T> listByKey(Class<?> tableClass, String tableColumnKey, Collection<?> tableColumnValues, Class<T> returnObjClass, String dataSourceKey) {
////        return listByKey_(null, tableClass, null, tableColumnKey, tableColumnValues, returnObjClass, dataSourceKey);
////    }
////
////    public static <T> List<T> listByKey(String tableName, String tableColumnKey, Collection<?> tableColumnValues, Class<T> returnObjClass, String dataSourceKey) {
////        return listByKey_(tableName, null, null, tableColumnKey, tableColumnValues, returnObjClass, dataSourceKey);
////    }
//
////
////    public static <T> List<T> listById(Class<?> tableClass, Collection<?> tableColumnValues) {
////        return listByKey_(null, tableClass, null, "id", tableColumnValues, null, null);
////    }
////
////    public static <T> List<T> listById(String tableName, Collection<?> tableColumnValues) {
////        return listByKey_(tableName, null, null, "id", tableColumnValues, null, null);
////    }
////
////    public static <T> List<T> listById(Class<?> tableClass, Collection<?> tableColumnValues, String dataSourceKey) {
////        return listByKey_(null, tableClass, null, "id", tableColumnValues, null, dataSourceKey);
////    }
////
////    public static <T> List<T> listById(String tableName, Collection<?> tableColumnValues, String dataSourceKey) {
////        return listByKey_(tableName, null, null, "id", tableColumnValues, null, dataSourceKey);
////    }
////
////    public static <T> List<T> listById(Class<?> tableClass, Collection<?> tableColumnValues, Class<T> returnObjClass) {
////        return listByKey_(null, tableClass, null, "id", tableColumnValues, returnObjClass, null);
////    }
////
////    public static <T> List<T> listById(String tableName, Collection<?> tableColumnValues, Class<T> returnObjClass) {
////        return listByKey_(tableName, null, null, "id", tableColumnValues, returnObjClass, null);
////    }
////
////    public static <T> List<T> listById(Class<?> tableClass, Collection<?> tableColumnValues, Class<T> returnObjClass, String dataSourceKey) {
////        return listByKey_(null, tableClass, null, "id", tableColumnValues, returnObjClass, dataSourceKey);
////    }
////
////    public static <T> List<T> listById(String tableName, Collection<?> tableColumnValues, Class<T> returnObjClass, String dataSourceKey) {
////        return listByKey_(tableName, null, null, "id", tableColumnValues, returnObjClass, dataSourceKey);
////    }
////    public static <T> List<T> listById(String tableName, Collection<?> tableColumnValues, String dataSourceKey) {
////        return listByKey_(tableName, null, null, "id", tableColumnValues, null, dataSourceKey);
////    }
